﻿using BCCommon;
using BCCommon.TMS.Insurance;
using BCDto.Sim.Admin.Admin;
using BCDto.TMS.PersonalInsuranceRecord;
using System.Collections.Generic;

namespace BCService.TMS.Insurance.PersonalInsuranceRecord
{
    public interface IPersonalInsuranceRecordService
    {
        /// <summary>
        /// 新增个人保单记录
        /// </summary>
        /// <param name="admin">当前登录人员</param>
        /// <param name="dto">个人保单信息</param>
        /// <returns></returns>
        PersonalInsuranceRecordDto Add(AdminDto admin,PersonalInsuranceRecordRequestDto dto);

        /// <summary>
        /// 分页查询个人保单信息
        /// </summary>
        /// <param name="conmpanyId">公司Id</param>
        /// <param name="underwritingCompany">承保公司</param>
        /// <param name="insured">被保人</param>
        /// <param name="identityCardNo">身份证号</param>
        /// <param name="status">状态</param>
        /// <param name="pageIndex">分页页码</param>
        /// <param name="pageSize">分页页数</param>
        /// <param name="ascending">是否升序排序</param>
        /// <param name="sortName">排序自动</param>
        /// <returns></returns>
        PageableList<PersonalInsuranceRecordDto> GetAll(long? conmpanyId,string underwritingCompany, string insured, string identityCardNo, InsuranceStatus? status, int pageIndex, int pageSize, bool? ascending, string sortName);

        /// <summary>
        /// 删除指定的保单记录信息
        /// </summary>
        /// <param name="personalInsuranceRecordId">个人保单记录Id</param>
        /// <returns></returns>
        bool Delete(long personalInsuranceRecordId);

        /// <summary>
        /// 修改指定的保单记录信息
        /// </summary>
        /// <param name="personalInsuranceRecordId"></param>
        /// <param name="entity">个人保单信息</param>
        /// <returns></returns>
        PersonalInsuranceRecordDto Update(long personalInsuranceRecordId, PersonalInsuranceRecordRequestDto entity);

        /// <summary>
        /// 根据身份证号获取保单列表
        /// </summary>
        /// <param name="identityCardNo">身份证号</param>
        /// <returns></returns>
        IEnumerable<PersonalInsuranceRecordDto> GetListByIdentityCardNo(string identityCardNo);


        /// <summary>
        /// 获取指定的保单记录信息
        /// </summary>
        /// <param name="personalInsuranceRecordId">个人保单记录Id</param>
        /// <returns></returns>
        PersonalInsuranceRecordDto GetByPersonalInsuranceRecordId(long personalInsuranceRecordId);

    }
}
